import pandas as pd
import re

# 1. 读取student.xlsx文件内容并打印
print("="*50)
print("1. student.xlsx文件内容：")
print("="*50)
# 从文档中读取数据并创建DataFrame（实际使用时替换为pd.read_excel('student.xlsx')）
data = {
    '序号': list(range(1, 46)),
    '学号': [f'21233104{str(i).zfill(2)}' for i in range(1, 46)],
    '姓名': ['陈福强', '陈汉宇', '陈南成', '陈鹏', '陈松杰', '陈宗辉', '方贵涛', '符大豪', '符日恩', '符显强',
             '何影影', '黄馨丹', '黄耀', '黄业鑫', '纪新帆', '黎俊文', '梁敏敏', '林铭', '林士师', '刘政见',
             '龙仕锦', '潘金娜', '彭恩慧', '阮金海', '汤健', '王炳坤', '王经助', '王康荣', '王著', '王姿',
             '韦佳壮', '翁冉', '谢金豆', '徐文杰', '徐鑫诚', '颜璟钧', '杨家意', '杨杰', '杨锦', '张昌子',
             '张福胜', '张祥', '张运旺', '郑孟陵', '郑有环'],
    '性别': ['男', '女', '男', '男', '男', '男', '男', '男', '男', '男',
             '女', '女', '男', '男', '男', '男', '女', '男', '男', '男',
             '男', '女', '男', '男', '男', '男', '男', '男', '男', '女',
             '男', '女', '男', '男', '男', '男', '男', '男', '男', '男',
             '男', '男', '男', '女', '男'],
    '年龄': [18, 19, 18, 19, 20, 16, 29, 31, 22, 34,
             27, 36, 17, 20, 30, 32, 23, 27, 31, 19,
             15, 37, 32, 28, 33, 42, 71, 83, 45, 34,
             43, 32, 56, 29, 31, 15, 19, 26, 37, 41,
             52, 43, 36, 43, 25],
    '家庭地址': ['海南省儋州市国营红岭农场桥南路11号', '海南省白沙县金波乡金波十八队', '海南省临高县东英镇东英居委会解放路南62号',
                '吉林省松原市长岭县大兴镇大兴村', '海南省海口市美兰区海府路101-3号', '海南省儋州市那大镇学府美院803号',
                '海南省三亚市吉阳区市仔村南新悦城小区', '海南省文昌市重兴镇东风村委会高步一村', '海南省东方市八所镇大占坡村',
                '海南省文昌市拥军路14号', '海南省东方市东河镇金炳村', '海南省保亭黎族苗族自治县什玲镇椰村村委会平土村',
                '海南省海口市琼山区龙昆南路59号', '海南省东方市八所镇铁路南工人新村3栋102号', '海南省海口市秀英街道金鼎路金城苑',
                '海南省三亚市崖州区崖城镇中心大道', '广西梧州市苍梧县岭脚镇龙潭村', '海南省海口市海甸岛二东路广益新村',
                '海南省海口市滨江街道高登东街110号琼山地税局九层楼宿舍', '河北省廊坊市广阳区大枣林庄村', '海南省儋州市八一总场文明东路十二栋六号',
                '海南省文昌市公坡镇锦东村委会东排山村6号', '海南省儋州市兰洋镇番加农场', '海南省海口市琼山区新大洲大道222号',
                '云南省丽江市古城区香江花园一区35栋501', '海南省东方市八所镇皇宁村二区七巷一号', '海南省乐东县黎族自治县佛罗镇白井村委会永德村一队60号',
                '海南省海口市琼山区三门坡镇北冲村', '海南省海口市府城街道海怡路21号', '海南省海口市琼山区新桥路',
                '广西壮族自治区港北区庆丰镇万新村万安屯255号', '河南省郑州市新郑市孟庄镇唐河村', '四川省广安市邻水县观音桥镇七一村5组38号',
                '湖南省邵阳市武冈市商三街十栋', '广东省惠州市淡水镇星河丹堤', '海南省临高县临城镇跃进居委会跃进路生产资料仓库宿舍4栋110号',
                '广西省贵港市港北区庆丰镇联塘村金塘屯247号', '贵州省铜仁市石阡县龙塘镇关门岩村三组', '广东省梅州市丰顺县丰良镇',
                '海南省海口市琼山区滨江路河口路', '海南省乐东黎族自治县志仲镇塔丰村委会塔丰七队69号', '海南省昌江黎族自治县海尾镇海楼街四巷28号',
                '海南省琼海市大路镇礼合3村', '海南省琼海市龙江镇', '海南省陵水县群英乡祖空村委会针内村12号']
}
df = pd.DataFrame(data)
print(df.to_string(index=False))  # 打印完整数据，不显示索引


# 2. 按性别统计学生人数并打印
print("\n" + "="*50)
print("2. 按性别统计人数：")
print("="*50)
gender_count = df['性别'].value_counts()
for gender, count in gender_count.items():
    print(f"{gender}生：{count}人")


# 3. 按年龄段统计学生人数并打印（年龄段划分：15-20岁、21-30岁、31-40岁、41岁及以上）
print("\n" + "="*50)
print("3. 按年龄段统计人数：")
print("="*50)
# 定义年龄段划分函数
def get_age_group(age):
    if 15 <= age <= 20:
        return '15-20岁'
    elif 21 <= age <= 30:
        return '21-30岁'
    elif 31 <= age <= 40:
        return '31-40岁'
    else:
        return '41岁及以上'

# 添加年龄段列并统计
df['年龄段'] = df['年龄'].apply(get_age_group)
age_group_count = df['年龄段'].value_counts().sort_index()  # 按年龄段顺序排序
for age_group, count in age_group_count.items():
    print(f"{age_group}：{count}人")


# 4. 按地区统计学生人数（外省按省份，海南省按市县）并打印
print("\n" + "="*50)
print("4. 按地区统计人数：")
print("="*50)
# 定义地区提取函数
def extract_region(address):
    if '海南省' in address:
        # 提取海南省的市县（匹配“海南省XX市/县/自治县”格式）
        hainan_pattern = r'海南省([^市县区]+[市县区])'
        match = re.search(hainan_pattern, address)
        if match:
            return match.group(1)
        else:
            return '海南省其他'
    else:
        # 提取外省的省份（匹配“XX省/自治区/直辖市”格式）
        other_pattern = r'([^省市区]+[省市区])'
        match = re.search(other_pattern, address)
        if match:
            return match.group(1)
        else:
            return '其他省份'

# 添加地区列并统计
df['地区'] = df['家庭地址'].apply(extract_region)
region_count = df['地区'].value_counts()
for region, count in region_count.items():
    print(f"{region}：{count}人")